# @Time    : 2022/8/22 22:06
# @Author  : 南黎
# @FileName: 1.鼠标控制.py
import win32api
from pynput.mouse import Controller,Button

#1.创建鼠标控制对象
mouse = Controller()

#2.获取一次当前鼠标位置
x,y=mouse.position#返回了一个位置坐标的元组
print("x方向鼠标位置：{}，y方向鼠标位置：{}".format(x,y))

#3.修改鼠标位置
mousePosition=mouse.position
print("修改前鼠标位置：{0}".format(mousePosition))
mouse.position=(666,666)#把鼠标位置设置为  (666,666)
mouseposition=mouse.position
print("修改后鼠标位置：{0}".format(mouseposition))

#4.鼠标执行点击与弹起
print("3秒后点击鼠标停留的位置")
win32api.Sleep(3000)#休眠等待3秒
# 模拟左键点击与弹起操作
mouse.position=(666,666)#把鼠标位置设置为  (666,666)
mousePosition=mouse.position
print("即将被左键点击与弹起的鼠标位置：{0}".format(mousePosition))
mouse.press(Button.left)#左键按下
win32api.Sleep(50)#有些要求点击有一些延迟
mouse.release(Button.left)#左键弹起
# 模拟右键点击与弹起操作
print("即将被右键点击与弹起的鼠标位置：{0}".format(mousePosition))
mouse.press(Button.right)#右键按下
win32api.Sleep(50)#有些要求点击有一些延迟
mouse.release(Button.right)#右键弹起

#5.鼠标点击封装，现成的封装与我们自己写一个封装
#现有的封装
mouse.position=(888,888)
mousePosition=mouse.position
mouse.click(Button.left,1)#鼠标左键点击1次，第一个参数表示左右键，第二个参数表示点击次数
#我们的封装函数,新增了一个参数用于表示点击延迟
def mzhClick(ButtonType,clickTimes,clickDelay):
    # 模拟左键点击延迟一段时间后再弹起的操作
    for i in range(clickTimes):
        mouse.press(ButtonType)#左键按下
        win32api.Sleep(clickDelay)#有些时候，我们的这个点击延迟可以加入随机数，这样看起来更接近真人的操作
        mouse.release(ButtonType)#左键弹起
mouse.position=(629,254)
mousePosition=mouse.position
mzhClick(Button.left,2,10)#双击，每次点击弹起延时10毫秒
